package com.code.mapper;

import com.code.pojo.LevelCount;
import com.code.pojo.User;
import com.code.pojo.UserMsg;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface UserMapper {
//        1、通过id 查询当个用户信息    【20分】
    @Select("select * from tb_user where id = #{id}")
    User selectById(int id);
//        2、使用动态sql,根据 用户名称、用户状态、性别 查询用户信息【注需要使用 if/where 标签】  【20分】
    List<User> selectByCondition(User user);
//        3、员工表插入数据 '孔九','','男',0,450000,'2021-12-20 20:20:20',4 ， 需要获取插入数据的 自增id  【20分】
    void insert(User user);
//        4、使用动态sql 根据id 编辑 用户名称、头像、性别、状态、积分 【注需要使用 set/where 标签】 【20分】
    void updateCondition(User user);
//        5、根据id 集合批量删除 用户信息 【20分】
    void delectByIds(@Param("ids")int[] ids);
//        6、根据sql 查询  员工id,用户名称,用户积分,用户级别【tip: 可以一个类作为映射实体类】---选做  【20分】
    @Select("SELECT tb_user.id,tb_user.`name`,tb_user.score,tb_level.level_name as level FROM tb_user LEFT OUTER JOIN tb_level ON tb_level.id = tb_user.level_id")
    List<UserMsg> getUserMsg();
//        7、根据sql 查询  用户等级id,用户等级名称,等级对应人员数【tip: 可以一个类作为映射实体类】---选做 【20分】
    @Select("SELECT tb_level.id,tb_level.level_name as name, a.count FROM tb_level LEFT OUTER JOIN \n" +
            "(SELECT tb_user.level_id AS level, COUNT(*) AS count FROM tb_user GROUP BY tb_user.level_id) AS a ON a.level = tb_level.id")
    List<LevelCount> getLevelCount();
//        8、根据 分页查询 所有用户信息   ---选做【使用分页插件】 【20分】
    @Select("select * from tb_user")
    List<User> selectAll();

}
